#pragma once

#include <AVUITransform3D.h>
#include <AVUIObjectCollection.h>

namespace AVUI {

class GeneralTransform3DCollection : public TAnimatableCollection<GeneralTransform3D>
{
public:
    DECLARE_ELEMENT(GeneralTransform3DCollection, AnimatableCollectionBase);

protected:

    virtual TRefCountedPtr<Freezable> CreateInstanceCore() AVUI_OVERRIDE { return object_allocate<GeneralTransform3DCollection>().get_Ptr(); }

};

typedef TRefCountedPtr<GeneralTransform3DCollection> GeneralTransform3DCollectionPtr;

class Transform3DCollection : public TAnimatableCollection<Transform3D>
{
public:
    DECLARE_ELEMENT(Transform3DCollection, AnimatableCollectionBase);

protected:

    virtual TRefCountedPtr<Freezable> CreateInstanceCore() AVUI_OVERRIDE { return object_allocate<Transform3DCollection>().get_Ptr(); }

};

typedef TRefCountedPtr<Transform3DCollection> Transform3DCollectionPtr;

}; // namespace AVUI
